package com.zlm.user.partner.service;

import com.zlm.common.base.BaseService;
import com.zlm.common.base.PageEntity;
import com.zlm.common.dto.HxGroupDto;
import com.zlm.common.entity.UserGroupDO;
import java.util.List;
import java.util.Map;

/**
 * @Author: duyufu
 * @Date: 2019/7/17 16:43
 */
public interface UserGroupService extends BaseService<UserGroupDO> {
    /**
     * 创建群组
     * @param groupDto
     */
    String addGroup(HxGroupDto groupDto);

    /**
     * 批量添加群组成员
     * @param groupHxId
     * @param userHxIds
     */
    void addHxGroupMember(String groupHxId, List<String> userHxIds);

    /**
     * 批量删除群组成员
     * @param groupHxId
     * @param userHxIds
     */
    void deleteHxGroupMember(String groupHxId, List<String> userHxIds);

    /**
     * 解散群组
     * @param userId
     * @param groupHxId
     */
    void deleteHxGroup(Integer userId,String groupHxId);

    /**
     * 删除单个群组成员
     * @param groupHxId
     * @param userHxId
     */
    void deleteSingleHxGroupMember(String groupHxId, String userHxId);

    /**
     * 分页获取群成员
     * @param groupHxId
     * @param pagenum
     * @param pagesize
     * @return
     */
    PageEntity getHxGroupMember(String groupHxId, Integer pagenum, Integer pagesize);

    /**
     * 修改环信群组信息
     * @param userId
     * @param groupHxId
     * @param groupname
     * @param description
     * @param maxusers
     */
    void updateHxGroup(Integer userId, String groupHxId, String groupname, String description, Integer maxusers);

    /**
     * 添加群组管理员
     * @param userId
     * @param groupHxId
     * @param userHxId
     */
    void addHxGroupAdmin(Integer userId, String groupHxId, String userHxId);

    /**
     * 移除环信管理员
     * @param userId
     * @param groupHxId
     * @param userHxId
     */
    void deleteHxGroupAdmin(Integer userId, String groupHxId, String userHxId);

    /**
     * 转让群组
     * @param userId
     * @param groupHxId
     * @param userHxId
     */
    void transferHxGroup(Integer userId, String groupHxId, String userHxId);

    /**
     * 获取管理员列表
     * @param groupHxId
     * @return
     */
    List<Map<String, Object>> getHxGroupAdmin(String groupHxId);

    /**
     * 获取一个用户参与的所有群组
     * @param userId
     * @return
     */
    List<UserGroupDO> getAllJoinedGroup(Integer userId);

    /**
     * 获取群组详情
     * @param groupHxId
     * @return
     */
    UserGroupDO getGroupDetail(String groupHxId);
}
